// pages/service/detail/detail.js
const { get, post } = require('../../../utils/request')
const app = getApp()
const auth = require('../../../utils/auth')

Page({
  data: {
    serviceId: 0,
    serviceDetail: null,
    loading: true,
    appointmentTime: '', // 预约时间
    appointmentTimeVisible: false, // 预约时间选择器是否可见
    totalPrice: 0, // 订单总价
    submitLoading: false, // 提交订单加载状态
    minDate: new Date().getTime(), // 最小日期为当前日期
    isProvider: false // 是否为服务提供者
  },

  onLoad(options) {
    // 检查用户角色
    this.checkUserRole()

    if (options.id) {
      this.setData({
        serviceId: options.id
      })
      this.getServiceDetail(options.id)
      this.initAppointmentTime() // 初始化预约时间为第二天
    } else {
      wx.showToast({
        title: '服务ID不存在',
        icon: 'none'
      })
      setTimeout(() => {
        wx.navigateBack()
      }, 1500)
    }
  },

  // 检查用户角色
  checkUserRole() {
    // 判断是否登录
    if (auth.isLoggedIn()) {
      const userInfo = auth.getUserInfo()
      if (userInfo && userInfo.role === 'provider') {
        this.setData({
          isProvider: true
        })
      }
    }
  },

  // 初始化预约时间为第二天
  initAppointmentTime() {
    const tomorrow = new Date()
    tomorrow.setDate(tomorrow.getDate() + 1)
    const year = tomorrow.getFullYear()
    const month = String(tomorrow.getMonth() + 1).padStart(2, '0')
    const day = String(tomorrow.getDate()).padStart(2, '0')
    const appointmentTime = `${year}-${month}-${day}`

    this.setData({
      appointmentTime
    })
  },

  // 获取服务详情
  getServiceDetail(id) {
    this.setData({ loading: true })

    // 调用真实接口获取服务详情
    get('/api/services/get/vo', { id }).then(res => {
      if (res.code === 0 && res.data) {
        // 处理服务详情数据
        const serviceData = res.data

        const serviceDetail = {
          id: serviceData.id,
          title: serviceData.name,
          desc: serviceData.description || '暂无描述',
          price: serviceData.price,
          unit: '次',
          categoryId: serviceData.categoryId,
          categoryName: serviceData.categoryName,
          coverImage: serviceData.image || '/assets/images/default.png',
          images: serviceData.image ? [serviceData.image] : ['/assets/images/default.png'],
          introduction: serviceData.description || '暂无介绍',
          // 直接使用原始字符串
          serviceScope: serviceData.serviceScope || '',
          serviceNotice: serviceData.serviceNotice || '',
          saleCount: 0,
          duration: serviceData.duration || 60
        }


        this.setData({
          serviceDetail,
          totalPrice: serviceData.price,
          loading: false
        })
      } else {
        wx.showToast({
          title: res.message || '获取服务详情失败',
          icon: 'none'
        })
        setTimeout(() => {
          wx.navigateBack()
        }, 1500)
      }
    }).catch(err => {
      console.error('获取服务详情失败', err)
      wx.showToast({
        title: '获取服务详情失败',
        icon: 'none'
      })
      setTimeout(() => {
        wx.navigateBack()
      }, 1500)
    })
  },

  // 显示时间选择器
  showTimePicker() {
    this.setData({
      appointmentTimeVisible: true
    })
  },

  // 关闭时间选择器
  closeTimePicker() {
    this.setData({
      appointmentTimeVisible: false
    })
  },

  // 确认时间选择
  confirmTimePicker(e) {
    // 确保有时间值
    if (e.detail && e.detail.value) {
      this.setData({
        appointmentTime: e.detail.value,
        appointmentTimeVisible: false
      })
    } else {
      // 如果没有选择时间，设置为明天
      this.initAppointmentTime()
      this.setData({
        appointmentTimeVisible: false
      })
    }
  },

  // 预览图片
  previewImage(e) {
    const current = e.currentTarget.dataset.src
    const urls = this.data.serviceDetail.images

    wx.previewImage({
      current,
      urls
    })
  },

  // 立即预约
  bookNow() {
    // 检查是否已登录
    if (!auth.isLoggedIn()) {
      wx.showToast({
        title: '请先登录后再预约',
        icon: 'none'
      })
      // 跳转到登录页
      setTimeout(() => {
        wx.navigateTo({
          url: '/pages/login/login'
        })
      }, 1000)
      return
    }

    // 检查是否为服务人员
    if (this.data.isProvider) {
      wx.showToast({
        title: '服务人员无法预约服务',
        icon: 'none'
      })
      return
    }

    // 检查是否选择了预约时间
    if (!this.data.appointmentTime) {
      wx.showToast({
        title: '请选择预约时间',
        icon: 'none'
      })
      return
    }

    // 跳转到订单创建页面
    wx.navigateTo({
      url: `/pages/order/create/create?serviceId=${this.data.serviceId}&appointmentTime=${this.data.appointmentTime}`
    })
  },

  // 提交订单方法已不再使用，可以删除
  submitOrder() {
    // 此方法已不再使用
  }
})